<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>QCNSim: QcnSimTest/TrafficGeneratorAllRecordRouteTest.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">QCNSim
   </div>
   <div id="projectbrief">Simulator for Quake-Catcher Network</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_3e989efef406e88ca8d8bde4ec47b67f.html">QcnSimTest</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">TrafficGeneratorAllRecordRouteTest.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_traffic_generator_all_record_route_test_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_traffic_generator_all_record_route_test_8h.html">TrafficGeneratorAllRecordRouteTest.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="class_traffic_generator_all_record_route_test.html#a2ddb000de62e480535af73bc090fbb1a">   27</a></span>&#160;<a class="code" href="class_traffic_generator_all_record_route_test.html#a2ddb000de62e480535af73bc090fbb1a">TrafficGeneratorAllRecordRouteTest::TrafficGeneratorAllRecordRouteTest</a>(): simulatorGlobals(<a class="code" href="class_simulator_globals.html">SimulatorGlobals</a>(0.0, 0.0, false, <span class="stringliteral">&quot;TrafficGeneratorAllRecordRouteTest&quot;</span>)), </div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;        scheduler(<a class="code" href="class_scheduler.html">Scheduler</a>(simulatorGlobals)) {</div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;            <a class="code" href="class_traffic_generator_all_record_route_test.html#a69a71ae09b9ef9dd795c55221d1560ef">simulatorGlobals</a>.<a class="code" href="class_simulator_globals.html#a4f30b6252c3682679c05233afbc0604d">seedRandomNumberGenerator</a>(1); <span class="comment">// Use a fixed seed here for the tests.</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;}</div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="_traffic_generator_all_record_route_test_8cpp.html#a883dbd00ac0f9b3fc2715d3fcf8ea5b2">   50</a></span>&#160;<a class="code" href="_constant_rate_traffic_generator_test_8cpp.html#a26497dd468babfeebfd7e976fdc56dd6">TEST_F</a>(<a class="code" href="class_traffic_generator_all_record_route_test.html">TrafficGeneratorAllRecordRouteTest</a>, RecordRoute) {</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="comment">// Some variables.</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <a class="code" href="class_event.html">Event</a> event;</div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    std::shared_ptr&lt;Entity&gt; eventEntityNonConst; <span class="comment">// To temporarily use for removal of constness of Entity within event.</span></div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    std::shared_ptr&lt;ProtocolDataUnit&gt; pduFromEventEntityNonConst;</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keywordtype">bool</span> simulationEnded = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pduSize = 1000; <span class="comment">// PDU will be 1000 bytes.</span></div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    </div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="comment">// Build 7 nodes.</span></div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    std::vector&lt;std::shared_ptr&lt;Node&gt;&gt; nodeVector;</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    std::vector&lt;std::shared_ptr&lt;Entity&gt;&gt; routeToNode2;</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    std::vector&lt;std::shared_ptr&lt;Entity&gt;&gt; routeToNode3;</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    std::vector&lt;std::shared_ptr&lt;Entity&gt;&gt; routeToNode4;</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    std::vector&lt;std::shared_ptr&lt;Entity&gt;&gt; routeToNode5;</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    std::vector&lt;std::shared_ptr&lt;Entity&gt;&gt; routeToNode6;</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 7; ++i) {</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        nodeVector.push_back(std::shared_ptr&lt;Node&gt;(<span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(simulatorGlobals)));</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    }</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="comment">// Create route from node0 to node2.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    routeToNode2.push_back(nodeVector.at(0));</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    routeToNode2.push_back(nodeVector.at(1));</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    routeToNode2.push_back(nodeVector.at(2));</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    </div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="comment">// Create route from node0 to node3.</span></div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    routeToNode3.push_back(nodeVector.at(0));</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    routeToNode3.push_back(nodeVector.at(1));</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    routeToNode3.push_back(nodeVector.at(3));</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="comment">// Create route from node0 to node4.</span></div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    routeToNode4.push_back(nodeVector.at(0));</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    routeToNode4.push_back(nodeVector.at(1));</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    routeToNode4.push_back(nodeVector.at(4));</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="comment">// Create route from node0 to node5.</span></div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    routeToNode5.push_back(nodeVector.at(0));</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    routeToNode5.push_back(nodeVector.at(1));</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    routeToNode5.push_back(nodeVector.at(5));</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    </div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="comment">// Create route from node0 to node6.</span></div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    routeToNode6.push_back(nodeVector.at(0));</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    routeToNode6.push_back(nodeVector.at(1));</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    routeToNode6.push_back(nodeVector.at(6));</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="comment">// Create simplex links between nodes.</span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <a class="code" href="class_link.html">Link</a> link01(nodeVector.at(0), nodeVector.at(1), 100000, 1.0, simulatorGlobals, scheduler); <span class="comment">// 100 Kbps, 1ms.</span></div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <a class="code" href="class_link.html">Link</a> link12(nodeVector.at(1), nodeVector.at(2), 100000, 1.0, simulatorGlobals, scheduler); <span class="comment">// 100 Kbps, 1s.</span></div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <a class="code" href="class_link.html">Link</a> link13(nodeVector.at(1), nodeVector.at(3), 100000, 1.0, simulatorGlobals, scheduler); <span class="comment">// 100 Kbps, 1s.</span></div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <a class="code" href="class_link.html">Link</a> link14(nodeVector.at(1), nodeVector.at(4), 100000, 1.0, simulatorGlobals, scheduler); <span class="comment">// 100 Kbps, 1s.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <a class="code" href="class_link.html">Link</a> link15(nodeVector.at(1), nodeVector.at(5), 100000, 1.0, simulatorGlobals, scheduler); <span class="comment">// 100 Kbps, 1s.</span></div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <a class="code" href="class_link.html">Link</a> link16(nodeVector.at(1), nodeVector.at(6), 100000, 1.0, simulatorGlobals, scheduler); <span class="comment">// 100 Kbps, 1s.</span></div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    </div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="comment">// Create traffic generators.</span></div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <a class="code" href="class_constant_rate_traffic_generator.html">ConstantRateTrafficGenerator</a> constantGenerator = <a class="code" href="class_constant_rate_traffic_generator.html">ConstantRateTrafficGenerator</a>(simulatorGlobals, scheduler, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faaa8dbff7900a4d5c983629de5a6f58d78">EventType::TRAFFIC_GENERATOR_ARRIVAL</a>, std::make_shared&lt;Message&gt;(<a class="code" href="class_message.html">Message</a>(<span class="stringliteral">&quot;constant&quot;</span>)),</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;                                                                                  nodeVector.at(0), nodeVector.at(2), 1, 1);</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <a class="code" href="class_exponential_traffic_generator.html">ExponentialTrafficGenerator</a> expoGenerator = <a class="code" href="class_exponential_traffic_generator.html">ExponentialTrafficGenerator</a>(simulatorGlobals, scheduler, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faaa8dbff7900a4d5c983629de5a6f58d78">EventType::TRAFFIC_GENERATOR_ARRIVAL</a>, std::make_shared&lt;Message&gt;(<a class="code" href="class_message.html">Message</a>(<span class="stringliteral">&quot;exponential&quot;</span>)),</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;                                                                            nodeVector.at(0), nodeVector.at(3), 1, 2.0);</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <a class="code" href="class_normal_traffic_generator.html">NormalTrafficGenerator</a> normalGenerator = <a class="code" href="class_normal_traffic_generator.html">NormalTrafficGenerator</a>(simulatorGlobals, scheduler, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faaa8dbff7900a4d5c983629de5a6f58d78">EventType::TRAFFIC_GENERATOR_ARRIVAL</a>, std::make_shared&lt;Message&gt;(<a class="code" href="class_message.html">Message</a>(<span class="stringliteral">&quot;normal&quot;</span>)),</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;                                                                            nodeVector.at(0), nodeVector.at(4), 1, 2, .01);</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <a class="code" href="class_qcn_sensor_traffic_generator.html">QcnSensorTrafficGenerator</a> qcnGenerator = <a class="code" href="class_qcn_sensor_traffic_generator.html">QcnSensorTrafficGenerator</a>(simulatorGlobals, scheduler, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faaa8dbff7900a4d5c983629de5a6f58d78">EventType::TRAFFIC_GENERATOR_ARRIVAL</a>, std::make_shared&lt;Message&gt;(<a class="code" href="class_message.html">Message</a>(<span class="stringliteral">&quot;qcn&quot;</span>)),</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;                                                                       nodeVector.at(0), nodeVector.at(5), 1, 0, 0, 0, 0);</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <a class="code" href="class_weibull_traffic_generator.html">WeibullTrafficGenerator</a> weibullGenerator = <a class="code" href="class_weibull_traffic_generator.html">WeibullTrafficGenerator</a>(simulatorGlobals, scheduler, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faaa8dbff7900a4d5c983629de5a6f58d78">EventType::TRAFFIC_GENERATOR_ARRIVAL</a>, std::make_shared&lt;Message&gt;(<a class="code" href="class_message.html">Message</a>(<span class="stringliteral">&quot;weibull&quot;</span>)),</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;                                                                       nodeVector.at(0), nodeVector.at(6), 1, 1, 1);</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    </div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="comment">// It is important to turn on all traffic generators, otherwise nullptr exceptions might come up (due to null tokens when calling createInstance...).</span></div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    constantGenerator.<a class="code" href="class_traffic_generator.html#aad024e020fac17dbee74f0da16707df1">turnOn</a>();</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    expoGenerator.turnOn();</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    normalGenerator.<a class="code" href="class_traffic_generator.html#aad024e020fac17dbee74f0da16707df1">turnOn</a>();</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    qcnGenerator.<a class="code" href="class_traffic_generator.html#aad024e020fac17dbee74f0da16707df1">turnOn</a>();</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    weibullGenerator.turnOn();</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    </div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">// Create traffic instances.</span></div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    constantGenerator.createInstanceTrafficEventPdu(pduSize, routeToNode2, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    expoGenerator.createInstanceTrafficEventPdu(pduSize, routeToNode3, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    normalGenerator.<a class="code" href="class_normal_traffic_generator.html#abfa4b83707426afdfdb7f3c830d6827c">createInstanceTrafficEventPdu</a>(pduSize, routeToNode4, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    qcnGenerator.<a class="code" href="class_qcn_sensor_traffic_generator.html#a3079900c11310c8dff41ed7126e04dd2">createInstanceTrafficEventPdu</a>(pduSize, routeToNode5, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    weibullGenerator.createInstanceTrafficEventPdu(pduSize, routeToNode6, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    </div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="comment">// Schedule one END_SIMULATION event.</span></div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    scheduler.schedule(<a class="code" href="class_event.html">Event</a>(1000, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa96955421ee351c21ef8b232bc9d8998d">EventType::END_SIMULATION</a>, <span class="keyword">nullptr</span>));</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="comment">// Main switch-case.</span></div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">while</span> (!simulationEnded) {</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keyword">event</span> = scheduler.cause(); <span class="comment">// Fetch next event from scheduler.</span></div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        eventEntityNonConst = std::const_pointer_cast&lt;<a class="code" href="class_entity.html">Entity</a>&gt;(<span class="keyword">event</span>.entity);</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        pduFromEventEntityNonConst = std::dynamic_pointer_cast&lt;<a class="code" href="class_protocol_data_unit.html">ProtocolDataUnit</a>&gt;(eventEntityNonConst);</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        <span class="comment">// Now decide what to do.</span></div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="keywordflow">switch</span> (event.<a class="code" href="class_event.html#a491887ba31c3f39b85930214133236fd">eventType</a>) {</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faaa8dbff7900a4d5c983629de5a6f58d78">EventType::TRAFFIC_GENERATOR_ARRIVAL</a>:</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;                <span class="comment">// Arrival from traffic generator.</span></div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;                <span class="comment">// Just pass the PDU to the next event.</span></div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;                scheduler.schedule(<a class="code" href="class_event.html">Event</a>(0.0, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772">EventType::PDUTOKEN_ARRIVAL_AT_NODE</a>, pduFromEventEntityNonConst));</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b">EventType::REQUEST_PDU_TRANSMISSION_AT_LINK</a>:</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;                <span class="comment">// Decide which link to use based on next field of PDU.</span></div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;                <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(1)) { <span class="comment">// All PDUs.</span></div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;                    link01.transmitPdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b">EventType::REQUEST_PDU_TRANSMISSION_AT_LINK</a>, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa7b83d89c39b12ab66465087a3118a3ac">EventType::END_TRANSMISSION_PROPAGATE_PDU_AT_LINK</a>, pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(2)) { <span class="comment">// Constant generator only.</span></div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;                    link12.transmitPdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b">EventType::REQUEST_PDU_TRANSMISSION_AT_LINK</a>, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa7b83d89c39b12ab66465087a3118a3ac">EventType::END_TRANSMISSION_PROPAGATE_PDU_AT_LINK</a>, pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) { <span class="comment">// Exponential generator only.</span></div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;                    link13.transmitPdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b">EventType::REQUEST_PDU_TRANSMISSION_AT_LINK</a>, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa7b83d89c39b12ab66465087a3118a3ac">EventType::END_TRANSMISSION_PROPAGATE_PDU_AT_LINK</a>, pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(4)) { <span class="comment">// Normal generator only.</span></div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;                    link14.transmitPdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b">EventType::REQUEST_PDU_TRANSMISSION_AT_LINK</a>, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa7b83d89c39b12ab66465087a3118a3ac">EventType::END_TRANSMISSION_PROPAGATE_PDU_AT_LINK</a>, pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(5)) { <span class="comment">// Qcn generator only.</span></div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;                    link15.transmitPdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b">EventType::REQUEST_PDU_TRANSMISSION_AT_LINK</a>, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa7b83d89c39b12ab66465087a3118a3ac">EventType::END_TRANSMISSION_PROPAGATE_PDU_AT_LINK</a>, pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(6)) { <span class="comment">// Weibull generator only.</span></div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;                    link16.transmitPdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b">EventType::REQUEST_PDU_TRANSMISSION_AT_LINK</a>, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa7b83d89c39b12ab66465087a3118a3ac">EventType::END_TRANSMISSION_PROPAGATE_PDU_AT_LINK</a>, pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;                    EXPECT_FALSE(<span class="keyword">true</span>); <span class="comment">// Fail if it reaches here.</span></div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;                }</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772">EventType::PDUTOKEN_ARRIVAL_AT_NODE</a>:</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                <span class="comment">// Test for arrival at each node and perform tests.</span></div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(0)) { <span class="comment">// Node 0.</span></div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                    <span class="comment">// Do nothing here. PDU will be transmitted to node 1.</span></div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(1)) { <span class="comment">// Node 1.</span></div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;                    <span class="comment">// End propagation.</span></div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;                    link01.endPropagation(pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                    <span class="comment">// PDU will be transmitted to next node according to explicit route.</span></div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(2)) { <span class="comment">// Node 2.</span></div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;                    <span class="comment">// End propagation.</span></div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;                    <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                    link12.endPropagation(pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) { <span class="comment">// Node 3.</span></div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;                    <span class="comment">// End propagation.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;                    <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;                    link13.endPropagation(pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) { <span class="comment">// Node 4.</span></div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;                    <span class="comment">// End propagation.</span></div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;                    <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;                    link14.endPropagation(pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) { <span class="comment">// Node 5.</span></div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;                    <span class="comment">// End propagation.</span></div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;                    <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                    link15.endPropagation(pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) { <span class="comment">// Node 6.</span></div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                    <span class="comment">// End propagation.</span></div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;                    <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                    link16.endPropagation(pduFromEventEntityNonConst);</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                }</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                <span class="comment">// This should be the same for either route. The &quot;next&quot; node should to the processing; it is actually the &quot;current&quot; node at this stage/event.</span></div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;                <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next != nodeVector.at(2) &amp;&amp; pduFromEventEntityNonConst-&gt;next != nodeVector.at(3) &amp;&amp;</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;                    pduFromEventEntityNonConst-&gt;next != nodeVector.at(4) &amp;&amp; pduFromEventEntityNonConst-&gt;next != nodeVector.at(5) &amp;&amp;</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                    pduFromEventEntityNonConst-&gt;next != nodeVector.at(6)) {</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                    <span class="comment">// Not Final destination; forward it.</span></div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                    EXPECT_EQ(<a class="code" href="_node_return_type_8h.html#a653f4b3757de7a3613c60211493c60c1a6491ac1bf9f296c0bd614d1b182f8932">NodeReturnType::PDU_ROUTE_UPDATED</a>, std::dynamic_pointer_cast&lt;Node&gt;(pduFromEventEntityNonConst-&gt;next)-&gt;processAndForward(std::dynamic_pointer_cast&lt;ProtocolDataUnit&gt;(eventEntityNonConst)));</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                    scheduler.schedule(<a class="code" href="class_event.html">Event</a>(0.0, <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b">EventType::REQUEST_PDU_TRANSMISSION_AT_LINK</a>, pduFromEventEntityNonConst));</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;                    <span class="comment">// Final destination. Do not schedule anything else.</span></div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;                    EXPECT_EQ(<a class="code" href="_node_return_type_8h.html#a653f4b3757de7a3613c60211493c60c1ab9804cb278b1f322f56a216720a67eec">NodeReturnType::FINAL_DESTINATION</a>, std::dynamic_pointer_cast&lt;Node&gt;(pduFromEventEntityNonConst-&gt;next)-&gt;processAndForward(std::dynamic_pointer_cast&lt;ProtocolDataUnit&gt;(eventEntityNonConst)));</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;                    <span class="comment">// Test for recorded routes.</span></div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;                    <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(2)) { <span class="comment">// Node 2.</span></div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;                        <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;                        EXPECT_EQ(<span class="stringliteral">&quot;constant&quot;</span>,  std::dynamic_pointer_cast&lt;Message&gt;(pduFromEventEntityNonConst-&gt;associatedEntity)-&gt;getContents());</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;                        EXPECT_EQ(routeToNode2, pduFromEventEntityNonConst-&gt;getRecordedRoute());</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;                    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) { <span class="comment">// Node 3.</span></div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;                        <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;                        EXPECT_EQ(<span class="stringliteral">&quot;exponential&quot;</span>,  std::dynamic_pointer_cast&lt;Message&gt;(pduFromEventEntityNonConst-&gt;associatedEntity)-&gt;getContents());</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;                        EXPECT_EQ(routeToNode3, pduFromEventEntityNonConst-&gt;getRecordedRoute());</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;                    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) { <span class="comment">// Node 4.</span></div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                        <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;                        EXPECT_EQ(<span class="stringliteral">&quot;normal&quot;</span>,  std::dynamic_pointer_cast&lt;Message&gt;(pduFromEventEntityNonConst-&gt;associatedEntity)-&gt;getContents());</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                        EXPECT_EQ(routeToNode4, pduFromEventEntityNonConst-&gt;getRecordedRoute());</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) { <span class="comment">// Node 5.</span></div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                        <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;                        EXPECT_EQ(<span class="stringliteral">&quot;qcn&quot;</span>,  std::dynamic_pointer_cast&lt;Message&gt;(pduFromEventEntityNonConst-&gt;associatedEntity)-&gt;getContents());</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                        EXPECT_EQ(routeToNode5, pduFromEventEntityNonConst-&gt;getRecordedRoute());</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) { <span class="comment">// Node 6.</span></div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                        <span class="comment">// Final destination.</span></div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                        EXPECT_EQ(<span class="stringliteral">&quot;weibull&quot;</span>,  std::dynamic_pointer_cast&lt;Message&gt;(pduFromEventEntityNonConst-&gt;associatedEntity)-&gt;getContents());</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                        EXPECT_EQ(routeToNode6, pduFromEventEntityNonConst-&gt;getRecordedRoute());</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                    }</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                }</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa96955421ee351c21ef8b232bc9d8998d">EventType::END_SIMULATION</a>:</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                std::cout &lt;&lt; <span class="stringliteral">&quot;Simulation ended.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;                simulationEnded = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa7b83d89c39b12ab66465087a3118a3ac">EventType::END_TRANSMISSION_PROPAGATE_PDU_AT_LINK</a>:</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;                <span class="comment">// Here, end the link transmission and schedule the end of propagation.</span></div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;                <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(1)) {</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;                    EXPECT_EQ(link01.propagatePdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772">EventType::PDUTOKEN_ARRIVAL_AT_NODE</a>, pduFromEventEntityNonConst), <a class="code" href="_link_return_type_8h.html#a554ed4dd9752dfafac386b42493b83afa546235efbb1655a5182b7eaf007ac0cc">LinkReturnType::PDU_IN_TRANSIT_NEXT_EVENT_SCHEDULED</a>);</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(2)) {</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;                    EXPECT_EQ(link12.propagatePdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772">EventType::PDUTOKEN_ARRIVAL_AT_NODE</a>, pduFromEventEntityNonConst), <a class="code" href="_link_return_type_8h.html#a554ed4dd9752dfafac386b42493b83afa546235efbb1655a5182b7eaf007ac0cc">LinkReturnType::PDU_IN_TRANSIT_NEXT_EVENT_SCHEDULED</a>);</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(3)) {</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;                    EXPECT_EQ(link13.propagatePdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772">EventType::PDUTOKEN_ARRIVAL_AT_NODE</a>, pduFromEventEntityNonConst), <a class="code" href="_link_return_type_8h.html#a554ed4dd9752dfafac386b42493b83afa546235efbb1655a5182b7eaf007ac0cc">LinkReturnType::PDU_IN_TRANSIT_NEXT_EVENT_SCHEDULED</a>);</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(4)) {</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;                    EXPECT_EQ(link14.propagatePdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772">EventType::PDUTOKEN_ARRIVAL_AT_NODE</a>, pduFromEventEntityNonConst), <a class="code" href="_link_return_type_8h.html#a554ed4dd9752dfafac386b42493b83afa546235efbb1655a5182b7eaf007ac0cc">LinkReturnType::PDU_IN_TRANSIT_NEXT_EVENT_SCHEDULED</a>);</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(5)) {</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;                    EXPECT_EQ(link15.propagatePdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772">EventType::PDUTOKEN_ARRIVAL_AT_NODE</a>, pduFromEventEntityNonConst), <a class="code" href="_link_return_type_8h.html#a554ed4dd9752dfafac386b42493b83afa546235efbb1655a5182b7eaf007ac0cc">LinkReturnType::PDU_IN_TRANSIT_NEXT_EVENT_SCHEDULED</a>);</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pduFromEventEntityNonConst-&gt;next == nodeVector.at(6)) {</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;                    EXPECT_EQ(link16.propagatePdu(<a class="code" href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772">EventType::PDUTOKEN_ARRIVAL_AT_NODE</a>, pduFromEventEntityNonConst), <a class="code" href="_link_return_type_8h.html#a554ed4dd9752dfafac386b42493b83afa546235efbb1655a5182b7eaf007ac0cc">LinkReturnType::PDU_IN_TRANSIT_NEXT_EVENT_SCHEDULED</a>);</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;                    EXPECT_FALSE(<span class="keyword">true</span>); <span class="comment">// Fail here.</span></div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                }</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;            <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;                EXPECT_FALSE(<span class="keyword">true</span>); <span class="comment">// This should never be reached.</span></div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        }</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    } <span class="comment">// End while.</span></div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;}</div>
<div class="ttc" id="class_protocol_data_unit_html"><div class="ttname"><a href="class_protocol_data_unit.html">ProtocolDataUnit</a></div><div class="ttdoc">Protocol Data Unit class. </div><div class="ttdef"><b>Definition:</b> <a href="_protocol_data_unit_8h_source.html#l00033">ProtocolDataUnit.h:33</a></div></div>
<div class="ttc" id="class_scheduler_html"><div class="ttname"><a href="class_scheduler.html">Scheduler</a></div><div class="ttdoc">Scheduler class. </div><div class="ttdef"><b>Definition:</b> <a href="_scheduler_8h_source.html#l00058">Scheduler.h:58</a></div></div>
<div class="ttc" id="class_event_html"><div class="ttname"><a href="class_event.html">Event</a></div><div class="ttdoc">Event class. </div><div class="ttdef"><b>Definition:</b> <a href="_event_8h_source.html#l00035">Event.h:35</a></div></div>
<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node class. </div><div class="ttdef"><b>Definition:</b> <a href="_node_8h_source.html#l00051">Node.h:51</a></div></div>
<div class="ttc" id="class_traffic_generator_all_record_route_test_html"><div class="ttname"><a href="class_traffic_generator_all_record_route_test.html">TrafficGeneratorAllRecordRouteTest</a></div><div class="ttdoc">Fixture for TrafficGenerator classes Tests. </div><div class="ttdef"><b>Definition:</b> <a href="_traffic_generator_all_record_route_test_8h_source.html#l00048">TrafficGeneratorAllRecordRouteTest.h:48</a></div></div>
<div class="ttc" id="_event_type_8h_html_a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772"><div class="ttname"><a href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa9b31ea954f59af0f85d1ac9b65607772">EventType::PDUTOKEN_ARRIVAL_AT_NODE</a></div><div class="ttdoc">A token or PDU arrives at a node. </div></div>
<div class="ttc" id="class_normal_traffic_generator_html_abfa4b83707426afdfdb7f3c830d6827c"><div class="ttname"><a href="class_normal_traffic_generator.html#abfa4b83707426afdfdb7f3c830d6827c">NormalTrafficGenerator::createInstanceTrafficEventPdu</a></div><div class="ttdeci">std::shared_ptr&lt; ProtocolDataUnit &gt; createInstanceTrafficEventPdu(unsigned int pduSize, bool recordRoute=false) override</div><div class="ttdoc">Creates an instance of Normal traffic event with PDU. </div><div class="ttdef"><b>Definition:</b> <a href="_normal_traffic_generator_8cpp_source.html#l00187">NormalTrafficGenerator.cpp:187</a></div></div>
<div class="ttc" id="class_qcn_sensor_traffic_generator_html"><div class="ttname"><a href="class_qcn_sensor_traffic_generator.html">QcnSensorTrafficGenerator</a></div><div class="ttdoc">QCN Sensor Traffic Generator. </div><div class="ttdef"><b>Definition:</b> <a href="_qcn_sensor_traffic_generator_8h_source.html#l00035">QcnSensorTrafficGenerator.h:35</a></div></div>
<div class="ttc" id="class_traffic_generator_all_record_route_test_html_a2ddb000de62e480535af73bc090fbb1a"><div class="ttname"><a href="class_traffic_generator_all_record_route_test.html#a2ddb000de62e480535af73bc090fbb1a">TrafficGeneratorAllRecordRouteTest::TrafficGeneratorAllRecordRouteTest</a></div><div class="ttdeci">TrafficGeneratorAllRecordRouteTest()</div><div class="ttdef"><b>Definition:</b> <a href="_traffic_generator_all_record_route_test_8cpp_source.html#l00027">TrafficGeneratorAllRecordRouteTest.cpp:27</a></div></div>
<div class="ttc" id="class_traffic_generator_all_record_route_test_html_a69a71ae09b9ef9dd795c55221d1560ef"><div class="ttname"><a href="class_traffic_generator_all_record_route_test.html#a69a71ae09b9ef9dd795c55221d1560ef">TrafficGeneratorAllRecordRouteTest::simulatorGlobals</a></div><div class="ttdeci">SimulatorGlobals simulatorGlobals</div><div class="ttdef"><b>Definition:</b> <a href="_traffic_generator_all_record_route_test_8h_source.html#l00050">TrafficGeneratorAllRecordRouteTest.h:50</a></div></div>
<div class="ttc" id="_node_return_type_8h_html_a653f4b3757de7a3613c60211493c60c1a6491ac1bf9f296c0bd614d1b182f8932"><div class="ttname"><a href="_node_return_type_8h.html#a653f4b3757de7a3613c60211493c60c1a6491ac1bf9f296c0bd614d1b182f8932">NodeReturnType::PDU_ROUTE_UPDATED</a></div><div class="ttdoc">Node is not final destination; route information was updated within PDU/token, to be forwarded...</div></div>
<div class="ttc" id="class_qcn_sensor_traffic_generator_html_a3079900c11310c8dff41ed7126e04dd2"><div class="ttname"><a href="class_qcn_sensor_traffic_generator.html#a3079900c11310c8dff41ed7126e04dd2">QcnSensorTrafficGenerator::createInstanceTrafficEventPdu</a></div><div class="ttdeci">std::shared_ptr&lt; ProtocolDataUnit &gt; createInstanceTrafficEventPdu(unsigned int pduSize, bool recordRoute=false) override</div><div class="ttdoc">Creates an instance of QCN sensor traffic event with PDU. </div><div class="ttdef"><b>Definition:</b> <a href="_qcn_sensor_traffic_generator_8cpp_source.html#l00219">QcnSensorTrafficGenerator.cpp:219</a></div></div>
<div class="ttc" id="class_exponential_traffic_generator_html"><div class="ttname"><a href="class_exponential_traffic_generator.html">ExponentialTrafficGenerator</a></div><div class="ttdoc">ExponentialTrafficGenerator class. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_traffic_generator_8h_source.html#l00039">ExponentialTrafficGenerator.h:39</a></div></div>
<div class="ttc" id="class_constant_rate_traffic_generator_html"><div class="ttname"><a href="class_constant_rate_traffic_generator.html">ConstantRateTrafficGenerator</a></div><div class="ttdoc">ConstantRateTrafficGenerator class. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_rate_traffic_generator_8h_source.html#l00035">ConstantRateTrafficGenerator.h:35</a></div></div>
<div class="ttc" id="class_entity_html"><div class="ttname"><a href="class_entity.html">Entity</a></div><div class="ttdoc">Entity class. </div><div class="ttdef"><b>Definition:</b> <a href="_entity_8h_source.html#l00029">Entity.h:29</a></div></div>
<div class="ttc" id="class_event_html_a491887ba31c3f39b85930214133236fd"><div class="ttname"><a href="class_event.html#a491887ba31c3f39b85930214133236fd">Event::eventType</a></div><div class="ttdeci">EventType eventType</div><div class="ttdoc">Type of the event. </div><div class="ttdef"><b>Definition:</b> <a href="_event_8h_source.html#l00038">Event.h:38</a></div></div>
<div class="ttc" id="_node_return_type_8h_html_a653f4b3757de7a3613c60211493c60c1ab9804cb278b1f322f56a216720a67eec"><div class="ttname"><a href="_node_return_type_8h.html#a653f4b3757de7a3613c60211493c60c1ab9804cb278b1f322f56a216720a67eec">NodeReturnType::FINAL_DESTINATION</a></div><div class="ttdoc">This node is the final destination. Stats updated, nothing else to do in node. </div></div>
<div class="ttc" id="_event_type_8h_html_a2628ea8d12e8b2563c32f05dc7fff6faaa8dbff7900a4d5c983629de5a6f58d78"><div class="ttname"><a href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faaa8dbff7900a4d5c983629de5a6f58d78">EventType::TRAFFIC_GENERATOR_ARRIVAL</a></div><div class="ttdoc">Arrival of instance of traffic generator. </div></div>
<div class="ttc" id="_traffic_generator_all_record_route_test_8h_html"><div class="ttname"><a href="_traffic_generator_all_record_route_test_8h.html">TrafficGeneratorAllRecordRouteTest.h</a></div></div>
<div class="ttc" id="_event_type_8h_html_a2628ea8d12e8b2563c32f05dc7fff6faa7b83d89c39b12ab66465087a3118a3ac"><div class="ttname"><a href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa7b83d89c39b12ab66465087a3118a3ac">EventType::END_TRANSMISSION_PROPAGATE_PDU_AT_LINK</a></div><div class="ttdoc">Propagates a PDU through a link (typically a fixed-time delay). </div></div>
<div class="ttc" id="class_message_html"><div class="ttname"><a href="class_message.html">Message</a></div><div class="ttdoc">Message class. </div><div class="ttdef"><b>Definition:</b> <a href="_message_8h_source.html#l00032">Message.h:32</a></div></div>
<div class="ttc" id="class_simulator_globals_html"><div class="ttname"><a href="class_simulator_globals.html">SimulatorGlobals</a></div><div class="ttdoc">Simulator-scope variables and parameters. </div><div class="ttdef"><b>Definition:</b> <a href="_simulator_globals_8h_source.html#l00158">SimulatorGlobals.h:158</a></div></div>
<div class="ttc" id="class_traffic_generator_html_aad024e020fac17dbee74f0da16707df1"><div class="ttname"><a href="class_traffic_generator.html#aad024e020fac17dbee74f0da16707df1">TrafficGenerator::turnOn</a></div><div class="ttdeci">virtual void turnOn()</div><div class="ttdef"><b>Definition:</b> <a href="_traffic_generator_8cpp_source.html#l00178">TrafficGenerator.cpp:178</a></div></div>
<div class="ttc" id="_event_type_8h_html_a2628ea8d12e8b2563c32f05dc7fff6faa96955421ee351c21ef8b232bc9d8998d"><div class="ttname"><a href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa96955421ee351c21ef8b232bc9d8998d">EventType::END_SIMULATION</a></div><div class="ttdoc">End of simulation event. Should be the last event to occur in the simulation, and the Event Chain sho...</div></div>
<div class="ttc" id="class_weibull_traffic_generator_html"><div class="ttname"><a href="class_weibull_traffic_generator.html">WeibullTrafficGenerator</a></div><div class="ttdoc">WeibullTrafficGenerator class. </div><div class="ttdef"><b>Definition:</b> <a href="_weibull_traffic_generator_8h_source.html#l00034">WeibullTrafficGenerator.h:34</a></div></div>
<div class="ttc" id="class_normal_traffic_generator_html"><div class="ttname"><a href="class_normal_traffic_generator.html">NormalTrafficGenerator</a></div><div class="ttdoc">NormalTrafficGenerator class. </div><div class="ttdef"><b>Definition:</b> <a href="_normal_traffic_generator_8h_source.html#l00034">NormalTrafficGenerator.h:34</a></div></div>
<div class="ttc" id="_constant_rate_traffic_generator_test_8cpp_html_a26497dd468babfeebfd7e976fdc56dd6"><div class="ttname"><a href="_constant_rate_traffic_generator_test_8cpp.html#a26497dd468babfeebfd7e976fdc56dd6">TEST_F</a></div><div class="ttdeci">TEST_F(ConstantRateTrafficGeneratorTest, ConstantRateRateGeneratorTest)</div><div class="ttdoc">Tests for constant rate generator. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_rate_traffic_generator_test_8cpp_source.html#l00034">ConstantRateTrafficGeneratorTest.cpp:34</a></div></div>
<div class="ttc" id="_link_return_type_8h_html_a554ed4dd9752dfafac386b42493b83afa546235efbb1655a5182b7eaf007ac0cc"><div class="ttname"><a href="_link_return_type_8h.html#a554ed4dd9752dfafac386b42493b83afa546235efbb1655a5182b7eaf007ac0cc">LinkReturnType::PDU_IN_TRANSIT_NEXT_EVENT_SCHEDULED</a></div><div class="ttdoc">PDU is in transit within link medium (and within inTransitQueue). </div></div>
<div class="ttc" id="class_simulator_globals_html_a4f30b6252c3682679c05233afbc0604d"><div class="ttname"><a href="class_simulator_globals.html#a4f30b6252c3682679c05233afbc0604d">SimulatorGlobals::seedRandomNumberGenerator</a></div><div class="ttdeci">void seedRandomNumberGenerator(unsigned int seed)</div><div class="ttdef"><b>Definition:</b> <a href="_simulator_globals_8cpp_source.html#l00147">SimulatorGlobals.cpp:147</a></div></div>
<div class="ttc" id="_event_type_8h_html_a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b"><div class="ttname"><a href="_event_type_8h.html#a2628ea8d12e8b2563c32f05dc7fff6faa2f5f57b148fe966a93f58ed00865a12b">EventType::REQUEST_PDU_TRANSMISSION_AT_LINK</a></div><div class="ttdoc">Request that a link transmits a PDU. </div></div>
<div class="ttc" id="class_link_html"><div class="ttname"><a href="class_link.html">Link</a></div><div class="ttdoc">Link class. </div><div class="ttdef"><b>Definition:</b> <a href="_link_8h_source.html#l00069">Link.h:69</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Jan 6 2014 12:30:38 for QCNSim by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
